/**
 * 用户相关接口
 */
import http from "@/utils/http"

/**
 * 用户登录
 * @param {Object} data 登录参数
 * @param {string} data.phone 手机号
 * @param {string} data.code 验证码
 * @returns {Promise} 登录结果
 */
export const login = (data) => {
	return http.post("/api/user/login", data, {
		loadingText: "登录中..."
	})
}

/**
 * 获取用户信息
 * @returns {Promise} 用户信息
 */
export const getUserInfo = () => {
	return http.get("/api/user/info")
}

/**
 * 更新用户信息
 * @param {Object} data 用户信息
 * @returns {Promise} 更新结果
 */
export const updateUserInfo = (data) => {
	return http.put("/api/user/info", data, {
		loadingText: "更新中..."
	})
}

/**
 * 获取用户列表
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.size 每页条数
 * @param {string} [params.keyword] 搜索关键词
 * @returns {Promise} 用户列表
 */
export const getUserList = (params) => {
	return http.get("/api/user/list", params)
}

/**
 * 删除用户
 * @param {string} userId 用户ID
 * @returns {Promise} 删除结果
 */
export const deleteUser = (userId) => {
	return http.delete(`/api/user/${userId}`, null, {
		loadingText: "删除中..."
	})
}

/**
 * 上传用户头像
 * @param {string} filePath 文件路径
 * @returns {Promise} 上传结果
 */
export const uploadAvatar = (filePath) => {
	return new Promise((resolve, reject) => {
		uni.uploadFile({
			url: http.config.baseURL + "/api/user/avatar",
			filePath,
			name: "file",
			header: {
				Authorization: `Bearer ${uni.getStorageSync("token")}`
			},
			success: (res) => {
				if (res.statusCode === 200) {
					const data = JSON.parse(res.data)
					if (data.code === 0) {
						resolve(data.data)
					} else {
						reject(data)
					}
				} else {
					reject(res)
				}
			},
			fail: (error) => {
				reject(error)
			}
		})
	})
}

/**
 * 修改密码
 * @param {Object} data 密码信息
 * @param {string} data.oldPassword 旧密码
 * @param {string} data.newPassword 新密码
 * @returns {Promise} 修改结果
 */
export const changePassword = (data) => {
	return http.post("/api/user/password", data, {
		loadingText: "修改中..."
	})
}

/**
 * 获取用户统计数据
 * @returns {Promise} 统计数据
 */
export const getUserStats = () => {
	return http.get("/api/user/stats", null, {
		loading: false
	})
}

/**
 * 批量删除用户
 * @param {string[]} userIds 用户ID数组
 * @returns {Promise} 删除结果
 */
export const batchDeleteUsers = (userIds) => {
	return http.post(
		"/api/user/batch-delete",
		{ userIds },
		{
			loadingText: "删除中...",
			header: {
				"X-Requested-With": "XMLHttpRequest"
			}
		}
	)
}

/**
 * 导出用户数据
 * @param {Object} params 导出参数
 * @returns {Promise} 导出结果
 */
export const exportUsers = (params) => {
	return http.get("/api/user/export", params, {
		loadingText: "导出中...",
		responseType: "blob",
		header: {
			Accept: "application/vnd.ms-excel"
		}
	})
}

/**
 * 获取用户操作日志
 * @param {Object} params 查询参数
 * @returns {Promise} 日志列表
 */
export const getUserLogs = (params) => {
	return http.get("/api/user/logs", params)
}
